home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / FileTransfers.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  13.5 KB  |  422 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        FileTransfers.h
  3.  
  4.      Contains:    CommToolbox File Transfer Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1988-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __FILETRANSFERS__
  18. #define __FILETRANSFERS__
  19.  
  20. #ifndef __CONDITIONALMACROS__
  21. #include <ConditionalMacros.h>
  22. #endif
  23. #ifndef __STANDARDFILE__
  24. #include <StandardFile.h>
  25. #endif
  26. #ifndef __CTBUTILITIES__
  27. #include <CTBUtilities.h>
  28. #endif
  29. #ifndef __CONNECTIONS__
  30. #include <Connections.h>
  31. #endif
  32. #ifndef __FILES__
  33. #include <Files.h>
  34. #endif
  35. #ifndef __TERMINALS__
  36. #include <Terminals.h>
  37. #endif
  38.  
  39.  
  40.  
  41. #if PRAGMA_ONCE
  42. #pragma once
  43. #endif
  44.  
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48.  
  49. #if PRAGMA_IMPORT
  50. #pragma import on
  51. #endif
  52.  
  53. #if PRAGMA_STRUCT_ALIGN
  54.     #pragma options align=mac68k
  55. #elif PRAGMA_STRUCT_PACKPUSH
  56.     #pragma pack(push, 2)
  57. #elif PRAGMA_STRUCT_PACK
  58.     #pragma pack(2)
  59. #endif
  60.  
  61.  
  62. enum {
  63.     curFTVersion                = 2                                /* current file transfer manager version*/
  64. };
  65.  
  66.  
  67. enum {
  68.                                                                 /* FTErr    */
  69.     ftGenericError                = -1,
  70.     ftNoErr                        = 0,
  71.     ftRejected                    = 1,
  72.     ftFailed                    = 2,
  73.     ftTimeOut                    = 3,
  74.     ftTooManyRetry                = 4,
  75.     ftNotEnoughDSpace            = 5,
  76.     ftRemoteCancel                = 6,
  77.     ftWrongFormat                = 7,
  78.     ftNoTools                    = 8,
  79.     ftUserCancel                = 9,
  80.     ftNotSupported                = 10
  81. };
  82.  
  83. typedef OSErr                             FTErr;
  84.  
  85. enum {
  86.     ftIsFTMode                    = 1 << 0,
  87.     ftNoMenus                    = 1 << 1,
  88.     ftQuiet                        = 1 << 2,
  89.     ftConfigChanged                = 1 << 4,
  90.     ftSucc                        = 1 << 7
  91. };
  92.  
  93. typedef unsigned long                     FTFlags;
  94.  
  95. enum {
  96.     ftSameCircuit                = 1 << 0,
  97.     ftSendDisable                = 1 << 1,
  98.     ftReceiveDisable            = 1 << 2,
  99.     ftTextOnly                    = 1 << 3,
  100.     ftNoStdFile                    = 1 << 4,
  101.     ftMultipleFileSend            = 1 << 5
  102. };
  103.  
  104. typedef unsigned short                     FTAttributes;
  105.  
  106. enum {
  107.     ftReceiving                    = 0,
  108.     ftTransmitting                = 1,
  109.     ftFullDuplex                = 2                                /* (16) added ftFullDuplex bit.*/
  110. };
  111.  
  112. typedef unsigned short                     FTDirection;
  113. typedef CALLBACK_API( long , FileTransferDefProcPtr )(TermHandle hTerm, short msg, long p1, long p2, long p3);
  114. /*    application routines type definitions */
  115. typedef struct FTRecord                 FTRecord;
  116. typedef FTRecord *                        FTPtr;
  117. typedef FTPtr *                            FTHandle;
  118. typedef CALLBACK_API( OSErr , FileTransferReadProcPtr )(unsigned long *count, Ptr pData, long refCon, short fileMsg);
  119. typedef CALLBACK_API( OSErr , FileTransferWriteProcPtr )(unsigned long *count, Ptr pData, long refCon, short fileMsg);
  120. typedef CALLBACK_API( Size , FileTransferSendProcPtr )(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags flag);
  121. typedef CALLBACK_API( Size , FileTransferReceiveProcPtr )(Ptr thePtr, long theSize, long refCon, CMChannel channel, CMFlags *flag);
  122. typedef CALLBACK_API( OSErr , FileTransferEnvironsProcPtr )(long refCon, ConnEnvironRec *theEnvirons);
  123. typedef CALLBACK_API( void , FileTransferNotificationProcPtr )(FTHandle hFT, const FSSpec *pFSSpec)/*  (15) added const */;
  124. typedef CALLBACK_API( void , FileTransferChooseIdleProcPtr )(void );
  125. typedef STACK_UPP_TYPE(FileTransferDefProcPtr)                     FileTransferDefUPP;
  126. typedef STACK_UPP_TYPE(FileTransferReadProcPtr)                 FileTransferReadUPP;
  127. typedef STACK_UPP_TYPE(FileTransferWriteProcPtr)                 FileTransferWriteUPP;
  128. typedef STACK_UPP_TYPE(FileTransferSendProcPtr)                 FileTransferSendUPP;
  129. typedef STACK_UPP_TYPE(FileTransferReceiveProcPtr)                 FileTransferReceiveUPP;
  130. typedef STACK_UPP_TYPE(FileTransferEnvironsProcPtr)             FileTransferEnvironsUPP;
  131. typedef STACK_UPP_TYPE(FileTransferNotificationProcPtr)         FileTransferNotificationUPP;
  132. typedef STACK_UPP_TYPE(FileTransferChooseIdleProcPtr)             FileTransferChooseIdleUPP;
  133.  
  134. struct FTRecord {
  135.     short                             procID;
  136.     FTFlags                         flags;
  137.     FTErr                             errCode;
  138.     long                             refCon;
  139.     long                             userData;
  140.     FileTransferDefUPP                 defProc;
  141.     Ptr                             config;
  142.     Ptr                             oldConfig;
  143.     FileTransferEnvironsUPP         environsProc;
  144.     long                             reserved1;
  145.     long                             reserved2;
  146.     Ptr                             ftPrivate;
  147.     FileTransferSendUPP             sendProc;
  148.     FileTransferReceiveUPP             recvProc;
  149.     FileTransferWriteUPP             writeProc;
  150.     FileTransferReadUPP             readProc;
  151.     WindowPtr                         owner;
  152.     FTDirection                     direction;
  153.     SFReply                         theReply;
  154.     long                             writePtr;
  155.     long                             readPtr;
  156.     Ptr                             theBuf;
  157.     long                             bufSize;
  158.     Str255                             autoRec;
  159.     FTAttributes                     attributes;
  160. };
  161.  
  162. typedef unsigned short                     FTCompletionKind;
  163.  
  164. enum {
  165.                                                                 /* FTReadProc messages */
  166.     ftReadOpenFile                = 0,                            /* count = forkFlags, buffer = pblock from PBGetFInfo */
  167.     ftReadDataFork                = 1,
  168.     ftReadRsrcFork                = 2,
  169.     ftReadAbort                    = 3,
  170.     ftReadComplete                = 4,
  171.     ftReadSetFPos                = 6,                            /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  172.     ftReadGetFPos                = 7                                /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  173. };
  174.  
  175.  
  176. enum {
  177.                                                                 /* FTWriteProc messages */
  178.     ftWriteOpenFile                = 0,                            /* count = forkFlags, buffer = pblock from PBGetFInfo */
  179.     ftWriteDataFork                = 1,
  180.     ftWriteRsrcFork                = 2,
  181.     ftWriteAbort                = 3,
  182.     ftWriteComplete                = 4,
  183.     ftWriteFileInfo                = 5,
  184.     ftWriteSetFPos                = 6,                            /* count = forkFlags, buffer = pBlock same as PBSetFPos */
  185.     ftWriteGetFPos                = 7                                /* count = forkFlags, buffer = pBlock same as PBGetFPos */
  186. };
  187.  
  188.  
  189. enum {
  190.                                                                 /*    fork flags */
  191.     ftOpenDataFork                = 1,
  192.     ftOpenRsrcFork                = 2
  193. };
  194.  
  195. enum { uppFileTransferDefProcInfo = 0x0000FEF0 };                 /* pascal 4_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  196. enum { uppFileTransferReadProcInfo = 0x00002FE0 };                 /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  197. enum { uppFileTransferWriteProcInfo = 0x00002FE0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  198. enum { uppFileTransferSendProcInfo = 0x0000AFF0 };                 /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 2_bytes) */
  199. enum { uppFileTransferReceiveProcInfo = 0x0000EFF0 };             /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes) */
  200. enum { uppFileTransferEnvironsProcInfo = 0x000003E0 };             /* pascal 2_bytes Func(4_bytes, 4_bytes) */
  201. enum { uppFileTransferNotificationProcInfo = 0x000003C0 };         /* pascal no_return_value Func(4_bytes, 4_bytes) */
  202. enum { uppFileTransferChooseIdleProcInfo = 0x00000000 };         /* pascal no_return_value Func() */
  203. #define NewFileTransferDefProc(userRoutine)                     (FileTransferDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferDefProcInfo, GetCurrentArchitecture())
  204. #define NewFileTransferReadProc(userRoutine)                     (FileTransferReadUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferReadProcInfo, GetCurrentArchitecture())
  205. #define NewFileTransferWriteProc(userRoutine)                     (FileTransferWriteUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferWriteProcInfo, GetCurrentArchitecture())
  206. #define NewFileTransferSendProc(userRoutine)                     (FileTransferSendUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferSendProcInfo, GetCurrentArchitecture())
  207. #define NewFileTransferReceiveProc(userRoutine)                 (FileTransferReceiveUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferReceiveProcInfo, GetCurrentArchitecture())
  208. #define NewFileTransferEnvironsProc(userRoutine)                 (FileTransferEnvironsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferEnvironsProcInfo, GetCurrentArchitecture())
  209. #define NewFileTransferNotificationProc(userRoutine)             (FileTransferNotificationUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferNotificationProcInfo, GetCurrentArchitecture())
  210. #define NewFileTransferChooseIdleProc(userRoutine)                 (FileTransferChooseIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileTransferChooseIdleProcInfo, GetCurrentArchitecture())
  211. #define CallFileTransferDefProc(userRoutine, hTerm, msg, p1, p2, p3)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppFileTransferDefProcInfo, (hTerm), (msg), (p1), (p2), (p3))
  212. #define CallFileTransferReadProc(userRoutine, count, pData, refCon, fileMsg)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppFileTransferReadProcInfo, (count), (pData), (refCon), (fileMsg))
  213. #define CallFileTransferWriteProc(userRoutine, count, pData, refCon, fileMsg)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppFileTransferWriteProcInfo, (count), (pData), (refCon), (fileMsg))
  214. #define CallFileTransferSendProc(userRoutine, thePtr, theSize, refCon, channel, flag)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppFileTransferSendProcInfo, (thePtr), (theSize), (refCon), (channel), (flag))
  215. #define CallFileTransferReceiveProc(userRoutine, thePtr, theSize, refCon, channel, flag)  CALL_FIVE_PARAMETER_UPP((userRoutine), uppFileTransferReceiveProcInfo, (thePtr), (theSize), (refCon), (channel), (flag))
  216. #define CallFileTransferEnvironsProc(userRoutine, refCon, theEnvirons)  CALL_TWO_PARAMETER_UPP((userRoutine), uppFileTransferEnvironsProcInfo, (refCon), (theEnvirons))
  217. #define CallFileTransferNotificationProc(userRoutine, hFT, pFSSpec)  CALL_TWO_PARAMETER_UPP((userRoutine), uppFileTransferNotificationProcInfo, (hFT), (pFSSpec))
  218. #define CallFileTransferChooseIdleProc(userRoutine)             CALL_ZERO_PARAMETER_UPP((userRoutine), uppFileTransferChooseIdleProcInfo)
  219.  
  220. EXTERN_API( FTErr )
  221. InitFT                            (void);
  222.  
  223. EXTERN_API( Handle )
  224. FTGetVersion                    (FTHandle                 hFT);
  225.  
  226. EXTERN_API( short )
  227. FTGetFTVersion                    (void);
  228.  
  229. EXTERN_API( FTHandle )
  230. FTNew                            (short                     procID,
  231.                                  FTFlags                 flags,
  232.                                  FileTransferSendUPP     sendProc,
  233.                                  FileTransferReceiveUPP  recvProc,
  234.                                  FileTransferReadUPP     readProc,
  235.                                  FileTransferWriteUPP     writeProc,
  236.                                  FileTransferEnvironsUPP  environsProc,
  237.                                  WindowPtr                 owner,
  238.                                  long                     refCon,
  239.                                  long                     userData);
  240.  
  241. EXTERN_API( void )
  242. FTDispose                        (FTHandle                 hFT);
  243.  
  244. EXTERN_API( FTErr )
  245. FTStart                            (FTHandle                 hFT,
  246.                                  FTDirection             direction,
  247.                                  const SFReply *        fileInfo);
  248.  
  249. EXTERN_API( FTErr )
  250. FTAbort                            (FTHandle                 hFT);
  251.  
  252. EXTERN_API( FTErr )
  253. FTSend                            (FTHandle                 hFT,
  254.                                  short                     numFiles,
  255.                                  FSSpecArrayPtr         pFSSpec,
  256.                                  FileTransferNotificationUPP  notifyProc);
  257.  
  258. EXTERN_API( FTErr )
  259. FTReceive                        (FTHandle                 hFT,
  260.                                  FSSpecPtr                 pFSSpec,
  261.                                  FileTransferNotificationUPP  notifyProc);
  262.  
  263. EXTERN_API( void )
  264. FTExec                            (FTHandle                 hFT);
  265.  
  266. EXTERN_API( void )
  267. FTActivate                        (FTHandle                 hFT,
  268.                                  Boolean                 activate);
  269.  
  270. EXTERN_API( void )
  271. FTResume                        (FTHandle                 hFT,
  272.                                  Boolean                 resume);
  273.  
  274. EXTERN_API( Boolean )
  275. FTMenu                            (FTHandle                 hFT,
  276.                                  short                     menuID,
  277.                                  short                     item);
  278.  
  279. EXTERN_API( short )
  280. FTChoose                        (FTHandle *                hFT,
  281.                                  Point                     where,
  282.                                  FileTransferChooseIdleUPP  idleProc);
  283.  
  284. EXTERN_API( void )
  285. FTEvent                            (FTHandle                 hFT,
  286.                                  const EventRecord *    theEvent);
  287.  
  288. EXTERN_API( Boolean )
  289. FTValidate                        (FTHandle                 hFT);
  290.  
  291. EXTERN_API( void )
  292. FTDefault                        (Ptr *                    theConfig,
  293.                                  short                     procID,
  294.                                  Boolean                 allocate);
  295.  
  296. EXTERN_API( Handle )
  297. FTSetupPreflight                (short                     procID,
  298.                                  long *                    magicCookie);
  299.  
  300. EXTERN_API( void )
  301. FTSetupSetup                    (short                     procID,
  302.                                  const void *            theConfig,
  303.                                  short                     count,
  304.                                  DialogPtr                 theDialog,
  305.                                  long *                    magicCookie);
  306.  
  307. EXTERN_API( Boolean )
  308. FTSetupFilter                    (short                     procID,
  309.                                  const void *            theConfig,
  310.                                  short                     count,
  311.                                  DialogPtr                 theDialog,
  312.                                  EventRecord *            theEvent,
  313.                                  short *                theItem,
  314.                                  long *                    magicCookie);
  315.  
  316. EXTERN_API( void )
  317. FTSetupItem                        (short                     procID,
  318.                                  const void *            theConfig,
  319.                                  short                     count,
  320.                                  DialogPtr                 theDialog,
  321.                                  short *                theItem,
  322.                                  long *                    magicCookie);
  323.  
  324. EXTERN_API( void )
  325. FTSetupXCleanup                    (short                     procID,
  326.                                  const void *            theConfig,
  327.                                  short                     count,
  328.                                  DialogPtr                 theDialog,
  329.                                  Boolean                 OKed,
  330.                                  long *                    magicCookie);
  331.  
  332. EXTERN_API( void )
  333. FTSetupPostflight                (short                     procID);
  334.  
  335. EXTERN_API( Ptr )
  336. FTGetConfig                        (FTHandle                 hFT);
  337.  
  338. EXTERN_API( short )
  339. FTSetConfig                        (FTHandle                 hFT,
  340.                                  const void *            thePtr);
  341.  
  342. EXTERN_API( FTErr )
  343. FTIntlToEnglish                    (FTHandle                 hFT,
  344.                                  const void *            inputPtr,
  345.                                  Ptr *                    outputPtr,
  346.                                  short                     language);
  347.  
  348. /* (16) chenged OSErr to FTErr*/
  349. EXTERN_API( FTErr )
  350. FTEnglishToIntl                    (FTHandle                 hFT,
  351.                                  const void *            inputPtr,
  352.                                  Ptr *                    outputPtr,
  353.                                  short                     language);
  354.  
  355. /* (16) chenged OSErr to FTErr*/
  356. EXTERN_API( void )
  357. FTGetToolName                    (short                     procID,
  358.                                  Str255                 name);
  359.  
  360. EXTERN_API( short )
  361. FTGetProcID                        (ConstStr255Param         name);
  362.  
  363. EXTERN_API( void )
  364. FTSetRefCon                        (FTHandle                 hFT,
  365.                                  long                     refCon);
  366.  
  367. EXTERN_API( long )
  368. FTGetRefCon                        (FTHandle                 hFT);
  369.  
  370. EXTERN_API( void )
  371. FTSetUserData                    (FTHandle                 hFT,
  372.                                  long                     userData);
  373.  
  374. EXTERN_API( long )
  375. FTGetUserData                    (FTHandle                 hFT);
  376.  
  377. EXTERN_API( void )
  378. FTGetErrorString                (FTHandle                 hFT,
  379.                                  short                     id,
  380.                                  Str255                 errMsg);
  381.  
  382. /*
  383.     These Async routines were added to InterfaceLib in System 7.5
  384. */
  385. EXTERN_API( FTErr )
  386. FTSendAsync                        (FTHandle                 hFT,
  387.                                  short                     numFiles,
  388.                                  FSSpecArrayPtr         pFSSpec,
  389.                                  FileTransferNotificationUPP  notifyProc);
  390.  
  391. EXTERN_API( FTErr )
  392. FTReceiveAsync                    (FTHandle                 hFT,
  393.                                  FSSpecPtr                 pFSSpec,
  394.                                  FileTransferNotificationUPP  notifyProc);
  395.  
  396. EXTERN_API( FTErr )
  397. FTCompletionAsync                (FTHandle                 hFT,
  398.                                  FTCompletionKind         completionCall);
  399.  
  400.  
  401.  
  402. #if PRAGMA_STRUCT_ALIGN
  403.     #pragma options align=reset
  404. #elif PRAGMA_STRUCT_PACKPUSH
  405.     #pragma pack(pop)
  406. #elif PRAGMA_STRUCT_PACK
  407.     #pragma pack()
  408. #endif
  409.  
  410. #ifdef PRAGMA_IMPORT_OFF
  411. #pragma import off
  412. #elif PRAGMA_IMPORT
  413. #pragma import reset
  414. #endif
  415.  
  416. #ifdef __cplusplus
  417. }
  418. #endif
  419.  
  420. #endif /* __FILETRANSFERS__ */
  421.  
  422.